GitHub Organizationのロールを整理してみた

GitHub Organizationのロールを整理してみた

Clock Icon2024.09.09

GitHubの組織(Organization)では、以下のように様々なレベルでロールが登場し、頭が混乱したので、ロールの種類と始め方について整理してみました。

  • 組織に割り当てるロール :オーナー/メンバー
  • チームメンバーを管理できるロール :メンテナー
  • レポジトリに割り当てるロール :リード/ライト/トリアージ/メインテイン/アドミン

なお、GitHubのアカウントは以下の3種類があります

  • ユーザー
  • 組織
  • エンタープライズ

本記事では、GitHub Enterpriseではない、一般的な組織(Organization)アカウントを対象に説明します。

組織レベルのロール

組織に紐づく代表的なロールとして、所有者(owner)メンバー(member) があります。

GitHub Org Level Role

組織に個人ユーザーを招待するときや既存ユーザーに対して、これらのロールのいずれかを割り当てることができます

github-org-role-owner

所有者(owner)

所有者は、組織に関するあらゆる操作が可能な特権ユーザーです。冗長化のために、必ず2名以上の所有者をアサインしましょう。

メンバー(member)

メンバーはデフォルトのユーザーです。後述するように、レポジトリごとにメンバー単位でロールを与えたり、メンバーが所属するチーム単位でロールを与えることが可能です。

高度なロール

組織の権限管理をより高度に行いたい場合、以下のロールを利用できます。

ロールと認可の組み合わせの詳細は、次のドキュメントの表"Permissions for organization roles"にまとまっています。

Roles in an organization - GitHub Docs

チームレベルのロール

メンバーはチームの単位で管理でき、チームの親子関係を作ることもできます。

GitHub Team Level Role

メンバー単位ではなく、チーム単位でロールを割り振ることで管理負担を軽減したり、チームの単位でメンション(@github/design)することもできるので、チームを活用しましょう。

github-team-role

チームに紐づくロールとして メンテナー(maintaner) があり、メンバーの追加・削除や子チームの作成ができます。このロールを活用し、組織のオーナーロールの一部権限を委譲しましょう。

レポジトリレベルのロール

レポジトリに紐づくロール として以下があり、個人、または、チームに対して割り当てられます

  • 読み取り(Read) : プロジェクトの表示またはディスカッションを行う、コードを書かないコントリビューターにお勧めします
  • トリアージ(Triage) : issues、ディスカッション、pull request を予防的に管理する必要があるが Write アクセス権は必要ない共同作成者にお勧めします
  • 書き込み(Write) : プロジェクトに積極的にプッシュするコントリビューターにお勧めします
  • 保守(Maintain) :リポジトリを管理する必要があるが、機密または破壊的なアクションへのアクセス権は不要なプロジェクト マネージャーにお勧めします
  • 管理者(Admin) : セキュリティの管理やリポジトリの削除などの機密および破壊的なアクションを含む、プロジェクトへのフル アクセス権が必要な方にお勧めします

まずはWriteとAdminの2つのロールから始めましょう。

GitHub Repository Level Role

組織のオーナーは組織配下のレポジトリに対して任意の操作を行えるため、オーナーにAdminロールをアサインする必要はありません。

github-repository-role

ロールと認可の組み合わせの詳細は、次のドキュメントの表"Permissions for each role"にまとまっています。

https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization

GitHub Organizationのロールの始め方

GitHub Organizationのロール運用のはじめの一歩についてまとめます。

  • Organizationに2名以上のオーナーロールを設定
  • メンバーはチーム単位で管理
  • チームにはメンバー管理や子チーム管理を行えるメンテナー・ロールを設定し、オーナー権限を委譲
  • レポジトリにはチームの単位でロールを付与し、まずはAdminとWriteの2ロールから始める
  • オーナーは任意の操作をできるので、レポジトリレベルのロール付与は不要

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.